﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////

// Reviewed

#pragma once
#include "GcmpGeometryInterface.h"
#include "GeometryExtendOption.h"
#include "GcmpApiDeclaration.h"

namespace gcmp
{
    class ISurface;
    class ICurve;

    class IExtend
    {
    public:
        virtual ~IExtend() {}

        /// \brief  延伸曲面(传入指针类型为普通指针）
        /// \param pISurface       待延伸的曲面
        /// \param extendOpt        延伸方式
        /// \param paramLength      延伸距离
        /// \return bool 延伸是否成功
        virtual bool Extend(ISurface* pISurface, SurfaceExtendOption extendOpt, double paramLength) const = 0;

        /// \brief  延伸曲线(传入指针类型为普通指针）
        /// \param pICurve         待延伸曲线
        /// \param bExtendCurveEnd  延伸方式，是否沿曲线尾端延伸
        /// \param length           待延伸的曲线长度
        /// \return bool 延伸是否成功
        virtual bool Extend(ICurve* pICurve, bool bExtendCurveEnd, double length) const = 0;
        
    };
}
